<?php
namespace DesignModel\Observer;
/**
 * Created by PhpStorm.
 * User: 554665488
 * Date: 2018-6-20
 * Time: 14:08
 * @description: 观察者模式 -- 定义事件发生者的基类
 * @Author: yfl
 * @QQ 554665488
 */

abstract class EventGenerator
{
    private $observers = [];//用来存放多个观察者    观察者对于事件发生者是不可见的  并不知道那些的人

    /**
     * @description:添加观察者
     * @var void 观察者
     * Date: 2018-6-20 14:21
     */
    public function addObserver(Observer $observer)
    {
        $this->observers[] = $observer;
    }

    /**
     * @description:通知所有的 观察者
     * @var void
     * Date: 2018-6-20 14:22
     */
    public function notify()
    {
        foreach ($this->observers as $index => $observer) {
             $observer->update();
       }
    }

}